//package com.xyhuo.leetcode.december;
//
//import java.util.*;
//
///**
// * 三数之和
// * https://leetcode.cn/problems/3sum/
// *
// * @time 2023/12/5
// */
//public class ThreeSum {
//
////    public static void main(String[] args) {
////        ThreeSum threeSum = new ThreeSum();
////        int[] nums = {-5, 0, 0, 0, 1, 4};
////        threeSum.threeSum(nums);
////    }
//
//    public List<List<Integer>> threeSum(int[] nums) {
//        List<List<Integer>> ans = new ArrayList<>();
//        Map<Integer, Integer> numMap = new HashMap<>();
//        Arrays.sort(nums);
//        for (int i = 0; i < nums.length; i++) {
//            numMap.put(nums[i], i);
//        }
//        int length = nums.length;
//        int[] numList = new int[3];
//        Set<String> ansSet = new HashSet<>();
//        for (int i = 0; i < length - 2; i++) {
//            if (nums[i] > 0) {
//                break;
//            }
//            int tmp = 0 - nums[i];
//            numList[0] = nums[i];
//            for (int j = i + 1; j < length - 1; j++) {
//                if (nums[i] + nums[j] > 0) {
//                    break;
//                }
//                int target = tmp - nums[j];
//                if (numMap.containsKey(target) && numMap.get(target) > j) {
//                    numList[1] = nums[j];
//                    numList[2] = target;
//                    Arrays.sort(numList);
//                    String tmpNum = numList[0] + "#" + numList[1] + "#" + numList[2];
//                    if (!ansSet.contains(tmpNum)) {
//                        ans.add(List.of(numList[0], numList[1], numList[2]));
//                        ansSet.add(tmpNum);
//                    }
//                }
//            }
//        }
//        return ans;
//    }
//}
